home *** CD-ROM | disk | FTP | other *** search
/ GFX Sensations 1 / Graphic Sensations - Volume 1.iso / tools / amiga / 3d_tools / irit40s.lha / Irit / inc / iritgrap.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-02  |  5.7 KB  |  208 lines

  1. /*****************************************************************************
  2. *   "Irit" - the 3d polygonal solid modeller.                     *
  3. *                                         *
  4. * Written by:  Gershon Elber                Ver 1.0, Jan. 1992   *
  5. ******************************************************************************
  6. * Global definitions of    Graphics interface.                         *
  7. *****************************************************************************/
  8.  
  9. #ifndef    IRIT_GRAP_H    /* Define only once */
  10. #define    IRIT_GRAP_H
  11.  
  12. #include "irit_sm.h"
  13. #include "genmat.h"
  14. #include "iritprsr.h"
  15.  
  16. #define IG_IRIT_BLACK        0
  17. #define IG_IRIT_BLUE        1
  18. #define IG_IRIT_GREEN        2
  19. #define IG_IRIT_CYAN        3
  20. #define IG_IRIT_RED        4
  21. #define IG_IRIT_MAGENTA        5
  22. #define IG_IRIT_BROWN        6
  23. #define IG_IRIT_LIGHTGREY    7
  24. #define IG_IRIT_DARKGRAY    8
  25. #define IG_IRIT_LIGHTBLUE    9
  26. #define IG_IRIT_LIGHTGREEN    10
  27. #define IG_IRIT_LIGHTCYAN    11
  28. #define IG_IRIT_LIGHTRED    12
  29. #define IG_IRIT_LIGHTMAGENTA    13
  30. #define IG_IRIT_YELLOW        14
  31. #define IG_IRIT_WHITE        15
  32.  
  33. #define IG_MAX_COLOR        15
  34.  
  35. #define IG_SOLID_LINE        1
  36. #define IG_DOTTED_LINE        2
  37.  
  38. #define IG_POINT_WIDTH        0.02
  39.  
  40. /* The current NormalLength is divided by scalar to form real normal length: */
  41. #define IG_NORMAL_DEFAULT_LENGTH    100
  42. #define IG_NORMAL_SCALER_LENGTH        1000
  43.  
  44. /* The current point cross length is divided by scalar to form real length:  */
  45. #define IG_POINT_DEFAULT_LENGTH    20
  46. #define IG_POINT_SCALER_LENGTH    1000
  47.  
  48. #define IG_DEFAULT_COLOR        1  /* For objects with no color defined. */
  49.  
  50. #define IG_VIEW_PERSPECTIVE        1              /* View modes. */
  51. #define IG_VIEW_ORTHOGRAPHIC        2
  52. #define IG_DEFAULT_PERSPECTIVE_Z    -5.0       /* Default Z focal point. */
  53.  
  54. #define IG_TRANS_SCREEN    1     /* Screen, Object coords. transformation mode. */
  55. #define IG_TRANS_OBJECT    2
  56.  
  57. #define IG_DEFAULT_NUM_OF_ISOLINES    10
  58. #define IG_DEFAULT_SAMPLES_PER_CURVE    6
  59.  
  60. #define IG_DEFAULT_IRIT_MAT        "irit.mat"
  61.  
  62. #define IG_IS_DRAG_EVENT(Event)    (Event == IG_EVENT_PERS_ORTHO_Z || \
  63.                  Event == IG_EVENT_ROTATE_X || \
  64.                  Event == IG_EVENT_ROTATE_Y || \
  65.                  Event == IG_EVENT_ROTATE_Z || \
  66.                  Event == IG_EVENT_TRANSLATE_X || \
  67.                  Event == IG_EVENT_TRANSLATE_Y || \
  68.                  Event == IG_EVENT_TRANSLATE_Z || \
  69.                  Event == IG_EVENT_SCALE || \
  70.                  Event == IG_EVENT_NEAR_CLIP || \
  71.                  Event == IG_EVENT_FAR_CLIP)
  72.  
  73. typedef enum {
  74.     IG_EVENT_NONE = 2000,
  75.     IG_EVENT_QUIT,
  76.     IG_EVENT_SCR_OBJ_TGL,
  77.     IG_EVENT_PERS_ORTHO_TGL,
  78.     IG_EVENT_PERS_ORTHO_Z,
  79.     IG_EVENT_ROTATE_X,
  80.     IG_EVENT_ROTATE_Y,
  81.     IG_EVENT_ROTATE_Z,
  82.     IG_EVENT_TRANSLATE_X,
  83.     IG_EVENT_TRANSLATE_Y,
  84.     IG_EVENT_TRANSLATE_Z,
  85.     IG_EVENT_SCALE,
  86.     IG_EVENT_NEAR_CLIP,
  87.     IG_EVENT_FAR_CLIP,
  88.     IG_EVENT_DEPTH_CUE,
  89.     IG_EVENT_DBL_BUFFER,
  90.     IG_EVENT_SAVE_MATRIX,
  91.     IG_EVENT_PUSH_MATRIX,
  92.     IG_EVENT_POP_MATRIX,
  93.     IG_EVENT_STATE
  94. } IGGraphicEventType;
  95.  
  96. typedef enum {
  97.     IG_STATE_OOPS = 1,
  98.     IG_STATE_MORE_SENSITIVE,
  99.     IG_STATE_LESS_SENSITIVE,
  100.     IG_STATE_SCR_OBJ_TGL,
  101.     IG_STATE_PERS_ORTHO_TGL,
  102.     IG_STATE_DEPTH_CUE,
  103.     IG_STATE_DRAW_SOLID,
  104.     IG_STATE_DOUBLE_BUFFER,
  105.     IG_STATE_ANTI_ALIASING,
  106.     IG_STATE_DRAW_INTERNAL,
  107.     IG_STATE_DRAW_VNORMAL,
  108.     IG_STATE_DRAW_PNORMAL,
  109.     IG_STATE_DRAW_SRF_MESH,
  110.     IG_STATE_DRAW_SRF_POLY,
  111.     IG_STATE_FOUR_PER_FLAT,
  112.     IG_STATE_MORE_ISOLINES,
  113.     IG_STATE_LESS_ISOLINES,
  114.     IG_STATE_FINER_APPROX,
  115.     IG_STATE_COARSER_APPROX,
  116.     IG_STATE_LONGER_VECTORS,
  117.     IG_STATE_SHORTER_VECTORS,
  118.     IG_STATE_WIDER_LINES,
  119.     IG_STATE_NARROW_LINES,
  120.     IG_STATE_FINER_ADAP_ISO,
  121.     IG_STATE_COARSER_ADAP_ISO,
  122.     IG_STATE_FINER_RULED_SRF,
  123.     IG_STATE_COARSER_RULED_SRF,
  124.     IG_STATE_RULED_SRF_APPROX,
  125.     IG_STATE_ADAP_ISO_DIR,
  126.     IG_STATE_VIEW_FRONT,
  127.     IG_STATE_VIEW_SIDE,
  128.     IG_STATE_VIEW_TOP,
  129.     IG_STATE_VIEW_ISOMETRY
  130. } IGGlblStateType;
  131.  
  132. extern int
  133.     IGGlblBackGroundColor[3],
  134.     IGGlblDrawInternal,
  135.     IGGlblDrawVNormal,
  136.     IGGlblDrawPNormal,
  137.     IGGlblMore,
  138.     IGGlblForceUnitMat,
  139.     IGGlblDrawSolid,
  140.     IGGlblDoDoubleBuffer,
  141.     IGGlblNumOfIsolines,
  142.     IGGlblSamplesPerCurve,
  143.     IGGlblLineWidth,
  144.     IGGlblAdapIsoDir,
  145.     IGGlblFineNess,
  146.     IGGlblDepthCue,
  147.     IGGlblFourPerFlat,
  148.     IGGlblAntiAliasing,
  149.     IGGlblDrawSurfaceMesh,
  150.     IGGlblDrawSurfacePoly,
  151.     IGGlblStandAlone,
  152.     IGGlblTransformMode,
  153.     IGGlblViewMode,
  154.     IGGlblDebugObjectsFlag,
  155.     IGGlblDebugEchoInputFlag,
  156.     IGGlblDelayedClear,
  157.     IGGlblDisplayListIsUsed,
  158.     IGGlblIntensityHighState,
  159.     IGGlblAbortKeyPressed,
  160.     IGGlblNumFiles;
  161.  
  162. extern char
  163.     *IGGlblTransPrefPos,
  164.     *IGGlblViewPrefPos,
  165.     **IGGlblFileNames;
  166.  
  167. extern RealType
  168.     IGGlblChangeFactor,
  169.     IGGlblZMinClip,
  170.     IGGlblZMaxClip,
  171.     IGGlblNormalLen;
  172.  
  173. extern IPObjectStruct
  174.     *IGGlblDisplayList;
  175.  
  176. extern MatrixType
  177.     IGGlblCrntViewMat;
  178.  
  179. /* Gen_grap.c routines - generic graphic's driver routines. */
  180. void IGConfigureGlobals(char *PrgmName, int argc, char **argv);
  181. void IGProcessCommandMessages(int ProcessCommandMessages);
  182. int IGReadObjectsFromSocket(int ViewMode, IPObjectStruct **DisplayList);
  183. void IGSaveCurrentMat(int ViewMode, char *Name);
  184. int IGProcessEvent(IGGraphicEventType Event, RealType ChangeFactor);
  185. void IGActiveListFreeNamedAttribute(char *Name);
  186. int IGDefaultStateHandler(int State, int Refresh);
  187.  
  188. /* Functions that should be defined in most graphics driver. */
  189. int IGHandleState(int State, int Refresh);
  190. void IGCreateStateMenu(void);
  191. void IGSetColorIntensity(int High);
  192. void IGSetColorObj(IPObjectStruct *PObj);
  193. void IGIritBeep(void);
  194. void IGMoveTo2D(RealType X, RealType Y);
  195. void IGLineTo2D(RealType X, RealType Y);
  196.  
  197. /* The primitive drawing routines. */
  198. void IGMoveTo3D(RealType *Pt);
  199. void IGLineTo3D(RealType *Pt);
  200. void IGDrawObject(IPObjectStruct *PObj);
  201. void IGDrawPtVec(IPObjectStruct *PObj);
  202. void IGDrawPoly(IPObjectStruct *PObj);
  203. void IGDrawCurve(IPObjectStruct *PObj);
  204. void IGDrawSurface(IPObjectStruct *PObj);
  205.  
  206. #endif /* IRIT_GRAP_H */
  207.  
  208.